\subsection{Explication du format MIDI}
\subsubsection{Définitions (Wikipedia)}
\paragraph{Le MIDI}
\begin{quotation}
Le Musical Instrument Digital Interface ou MIDI est un protocole de communication et de commande permettant l’échange de données entre instruments de musique électronique, un ou plusieurs de ces ``instruments'' pouvant être des ordinateurs.
\end{quotation}

\paragraph{Le format de fichier MIDI}
\label{sec:midiformat}
\begin{quotation}
Le format de fichier MIDI SMF (standard MIDI file) a été défini en 1988, pour stocker les commandes MIDI sur disquettes en y ajoutant des informations temporelles.

On peut les créer soit en connectant un instrument MIDI à l’entrée MIDI d’un ordinateur, soit à l’aide d’un logiciel séquenceur.
Il y a 3 formats différents de fichiers MIDI :
\begin{itemize}
\item \textbf{0 :} une seule piste contenant les messages des 16 canaux ;
\item \textbf{1 :} plusieurs pistes jouées simultanément ;
\item \textbf{2 :} plusieurs pistes jouées séquentiellement (rarement utilisé).
\end{itemize}
Les fichiers sont le plus souvent de type ``1'', car il est plus pratique de séparer les pistes, mais certains synthétiseurs ne supportent que le format 0. Des logiciels divers permettent de convertir un format en un autre.

Actuellement, un fichier midi standard se présente avec l’extension .mid ou .midi.
\end{quotation}

\subsubsection{Contenu d'un fichier MIDI}
\label{sec:midistruct}
\paragraph{Strucure :}
Un fichier midi est un fichier binaire organisé en blocs de données. Chaque bloc est précédé d'un en-tête de 8 octets. Les 4 premiers octets sont l'identifiant du bloc en chaine de caractère et les 4 suivants désignent la taille totale du bloc.

\paragraph{Header :}
Ce premier bloc contient les informations générale de la chanson\footnote{voir figure \ref{img:midi_headerchunk}}.
\begin{figure}[htbp]
\begin{center}
\includegraphics{img/midi_headerchunk}
\caption{Bloc ``header''}
\label{img:midi_headerchunk}
\end{center}
\end{figure}

\paragraph{Track :}
Ce bloc contient toutes les informations d'une piste\footnote{voir figure \ref{img:midi_trackchunk}}. Dans un fichier de type 0\footnote{voir \ref{sec:midiformat}}, l'unique piste contient toutes les informations de la chanson. Dans un fichier de type 1, par convention, la première piste contient des informations communes à toutes les pistes comme les variations de tempo.
\begin{figure}[htbp]
\begin{center}
\includegraphics{img/midi_trackchunk}
\caption{Bloc ``track''}
\label{img:midi_trackchunk}
\end{center}
\end{figure}

\paragraph{MIDI event :}
Les évènements servent à décrire le contenu musical de la piste. Comme les notes d'une partition, les évènements contiennent une notion de temps (voir figure \ref{img:midi_midievent}) exprimée sous forme de délai par rapport à l'évènement précédent. Si la valeur ``delta'' vaut zéro, l'évènement est déclenché en même temps que le précédent.
\begin{figure}[htbp]
\begin{center}
\includegraphics{img/midi_midievent}
\caption{Bloc ``MIDI event''}
\label{img:midi_midievent}
\end{center}
\end{figure}

L'octet suivant désigne le type d'évènement\footnote{voir figure \ref{img:midi_eventtype}} et le canal\footnote{le canal définit l'instrument affecté}.

\begin{figure}[htbp]
\begin{center}
\includegraphics{img/midi_eventtype}
\caption{Types d'évènements}
\label{img:midi_eventtype}
\end{center}
\end{figure}

Dans le cas d'une note, le numéro de la note désigne sa tonalité sachant que la note 0 correspond à C-2\footnote{notation américaine du DO de la gamme -3 (voir figure \ref{img:calc_notes})}.

\begin{figure}[!htbp]
\begin{center}
\includegraphics{img/calc_notes}
\caption{Extrait du tableau de correspondance des notes}
\label{img:calc_notes}
\end{center}
\end{figure}

\paragraph{Meta events :}
Ces évènements sont ceux qui ne passent pas par le flux MIDI. Ils servent soit de complément d'information, comme pour le nom des pistes, le copyright\dots , soit pour modifier la façon de lire le fichier comme pour le tempo (voir figure \ref{img:midi_tempo}).
\begin{figure}[htbp]
\begin{center}
\includegraphics{img/midi_tempo}
\caption{``Meta event'' (tempo)}
\label{img:midi_tempo}
\end{center}
\end{figure}

\begin{figure}[htbp]
\begin{center}
\begin{equation}
\mbox{MPQN} = 60000000 / \mbox{ BPM}
\end{equation}
\caption{Conversion d'un tempo exprimé en MPQN vers une valeur en BPM}
\label{form:tempo}
\end{center}
\end{figure}

Le tempo est exprimé en MPQN\footnote{Microseconde Per Quarter-Note (microsecondes par noire)}. Pour obtenir la valeur du tempo en BPM\footnote{Beat Per Minute}, il suffit de diviser le nombre de microsecondes qu'il y a dans une minute par la valeur de MPQN (voir figure \ref{form:tempo}).
\paragraph{Autres blocs :}
Le format midi peut contenir un grand nombre d'informations supplémentaires comme le volume, le panoramique, les paroles, etc. Une description détaillée du format est disponible sur le site \url{http://www.sonicspot.com/guide/midifiles.html}.
